unit uCreaProyecto; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ComCtrls, Buttons, ExtCtrls, StdCtrls, EditBtn;

type

  { TfrCrearProyecto }

  TfrCrearProyecto = class (TForm )
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    chbxSolucionNueva: TCheckBox;
    EditDirectorio: TDirectoryEdit;
    EditNombre: TEdit;
    EditSolucion: TEdit;
    lsvPlacas: TListView;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    lbNombre: TStaticText;
    lbDirectorio: TStaticText;
    lbSolucion: TStaticText;
    BarraDeEstado: TStatusBar;
    procedure BitBtn1Click(Sender: TObject);
    procedure chbxSolucionNuevaClick(Sender: TObject);
    procedure EditDirectorioExit(Sender: TObject);
    procedure EditNombreChange(Sender: TObject);
    procedure FormCloseQuery (Sender: TObject; var CanClose: boolean );
    procedure FormCreate (Sender: TObject );
    procedure lsvPlacasClick(Sender: TObject);
  private
    { private declarations }
    Procedure ActualizaBarraEstado (aTexto : string);
    Procedure ActivaBotonOk;

  public
    { public declarations }
    PlacaElegida : String;
     bSolucionNueva : Boolean;
  end; 

var
  frCrearProyecto: TfrCrearProyecto;

implementation
Uses uBoards,uComun,uControlesComun;
{ TfrCrearProyecto }

procedure TfrCrearProyecto.FormCreate (Sender: TObject );
var
  Placas: TPlacas;
  MiItem: TListItem;
  I: Integer;
  Registro: TArduino;
begin
 lsvPlacas.Column[0].Width:=AnchoCol;
 Placas := TPlacas.Create;
 Placas.CargarXML(Datos+Boards);
 For I:= 0 To Placas.Contar-1 do
 Begin
      MiItem := tListItem.Create(lsvPlacas.Items);
      Registro := TArduino.Create;
      Registro := Placas.Placas[I];
      MiItem.Caption:=Registro.name;
      MiItem.SubItems.Add(Registro.Descripcion);
      lsvPlacas.Items.AddItem(MiItem);
      MiItem := nil;
      Registro := nil;
 end;
 Placas := nil;
 ActualizaBarraEstado ('');

end;

procedure TfrCrearProyecto.lsvPlacasClick(Sender: TObject);
begin
  ActivaBotonOk;
end;

procedure TfrCrearProyecto.ActualizaBarraEstado(aTexto: string);
Const
   Texto : string = 'Tipo de placa seleccionada: ';
   Nada : String = '<Ninguna>';
begin
   If aTexto = '' Then
   Begin
      BarraDeEstado.SimpleText:= Texto+Nada;
   end
   Else
   Begin
        BarraDeEstado.SimpleText:=Texto+aTexto;
   end;
end;

procedure TfrCrearProyecto.ActivaBotonOk;
begin
    BitBtn1.Enabled:=(lsvPlacas.ItemIndex > -1) and
                      (EditNombre.Text <> '') and
                      (DirectoryExists(EditDirectorio.Directory)) and
                      (EditSolucion.Text <> '');

   if lsvPlacas.ItemIndex > -1 Then
   Begin
      ActualizaBarraEstado(lsvPlacas.Selected.Caption);
   end;
end;


procedure TfrCrearProyecto.EditNombreChange(Sender: TObject);
begin
  ActivaBotonOk;
end;

procedure TfrCrearProyecto.BitBtn1Click(Sender: TObject);
begin
  PlacaElegida := lsvPlacas.Selected.Caption;
  bSolucionNueva := chbxSolucionNueva.Checked;
end;

procedure TfrCrearProyecto.chbxSolucionNuevaClick(Sender: TObject);
begin
  editSolucion.Enabled:= chbxSolucionNueva.Checked = True;
end;

procedure TfrCrearProyecto.EditDirectorioExit(Sender: TObject);
begin
  //IF (EditDirectorio.Text<>'') and (Not DirectoryExists(EditDirectorio.Directory)) Then
  //Begin
  //   With DataModule1 do
  //   Begin
  //        PopMensaje.Title:= 'Atención';
  //        PopMensaje.Text:='El directorio no es válido';
  //        //PopMensaje.ShowAtPos(EditDirectorio.Top,
  //                        //    (EditDirectorio.Left)+EditDirectorio.Width);
  //        PopMensaje.Show;
  //   end;
  //end;
end;

procedure TfrCrearProyecto.FormCloseQuery (Sender: TObject;
  var CanClose: boolean );
begin
   //si la propiedad autosize está a falso esto no sirve de nada
   AnchoCol := lsvPlacas.Column[0].Width;



end;

initialization
  {$I ucreaproyecto.lrs}

end.

